USE [SUSECS]
GO
/****** Object:  StoredProcedure [dbo].[sp_sis_consultar]    Script Date: 03/16/2012 17:01:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_sis_consultar]
	@keyx INT = 0,
	@nombre VARCHAR(100) = '',
	@descripcion VARCHAR(350) = '',
	@activo BIT = 1, 
	@usrAlta int=1,
	@sistema int=2,
	@ip varchar(20),
	@host varchar(50),
	@ret_error int out
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	
	DECLARE @sql NVARCHAR(1024)
	DECLARE @where NVARCHAR(1024)
	DECLARE @var_tmp INT
	DECLARE @fecha DATETIME
	DECLARE @detalle varchar(2048)
	
	SET @fecha = getdate()
	
	SET @detalle = 'COMANDO:sp_sis_consultar @keyx='+ cast(@keyx as varchar)
	SET @detalle = @detalle+', @nombre='+ @nombre
	SET @detalle = @detalle+', @descripcion='+ @descripcion
	SET @detalle = @detalle+', @activo='+ cast(@activo as varchar)
	SET @detalle = @detalle+', @usrAlta='+ cast(@usrAlta as varchar) 
	SET @detalle = @detalle+', @sistema='+ cast(@sistema as varchar) 
	SET @detalle = @detalle+', @ip='+ @ip
	SET @detalle = @detalle+', @host='+ @host
	SET @detalle = @detalle+', @ret_error='+cast(@ret_error as varchar) 
	
	
	

    SET @sql='SELECT   [keyx]
					  ,[nombre]
					  ,[descripcion]
					  ,[activo]
				  FROM [SUSECS].[dbo].[sistemas]'
	
	SET @where = 'WHERE activo ='+cast( @activo as varchar)
	
	
	IF @keyx!=0
		BEGIN
			SET @where= @where + ' AND keyx=' +cast( @keyx as varchar)
		END
		
	IF @nombre!=''
		BEGIN
			SET @where= @where + ' AND nombre=''' + @nombre+ ''''
		END
	
	IF @descripcion!=''
		BEGIN
			SET @where= @where + ' AND descripcion='''+ @descripcion+''''
		END
	
	
	
	 SET @sql= @sql + @where
	--select @sql
	
	EXEC sp_executesql @sql
	
	SET @detalle = @detalle+'   Query: ' + @sql
	
	SET @detalle=@detalle+'  Codigo de Error='+cast(@@error as varchar)
	exec SUSECS.dbo.sp_add_suceso @fecha,@usrAlta,@sistema,@host,@ip,'Consultar Sistemas',@ret_error,@detalle
END

int cs_sqlspconsultar_body_generator(FILE *farchivo, struct st_model *model)
{
	struct st_property_ls *properties = model->properties;
	
	fprintf(farchivo,"\tSET @sql='SELECT \n");
	while(properties!=NULL)
	{
		fprintf(farchivo,"\tn");
	}
	
	fprintf(farchivo,"\tFROM  %s' \n",model->name);
}
int cs_sqlspconsultar_init_generator(FILE *farchivo, struct st_model *model)
{
	struct st_property_ls *properties = model->properties;
	struct st_property *property;
	fprintf(farchivo,"BEGIN\n");
	fprintf(farchivo,"\tSET NOCOUNT ON;\n");
	fprintf(farchivo,"\tDECLARE @sql NVARCHAR(2024)\n");
	fprintf(farchivo,"\tDECLARE @where NVARCHAR(2024)\n");
	fprintf(farchivo,"\tDECLARE @var_tmp INT\n");
	fprintf(farchivo,"\tDECLARE @fecha DATETIME\n");
	fprintf(farchivo,"\tDECLARE @detalle varchar(1024)\n");
	fprintf(farchivo,"\tSET @fecha = getdate()\n");
	fprintf(farchivo,"\tSET @detalle = 'COMANDO: SP_%s_consultar @id='+ cast(@id as varchar)",model->name);
	
	while(properties!=NULL)
	{
		property= properties->property;
		if(is_primitive_type(property))
			fprintf(farchivo,"\tSET @detalle = @detalle+', @%s='+ cast( @%s as varchar)\n",property->name,property->name);
		else 
			fprintf(farchivo,"\tSET @detalle = @detalle+', @%s_id='+ cast( @%s_id as varchar)\n",property->name,property->name);
		properties=properties->next;
	}

	fprintf(farchivo,"\tSET @detalle = @detalle+', @usrAlta='+ cast(@usrAlta as varchar)\n"); 
	fprintf(farchivo,"\tSET @detalle = @detalle+', @sistema='+ cast(@sistema as varchar)\n"); 
	fprintf(farchivo,"\tSET @detalle = @detalle+', @ip='+ @ip\n");
	fprintf(farchivo,"\tSET @detalle = @detalle+', @host='+ @host\n");
	fprintf(farchivo,"\tSET @detalle = @detalle+', @ret_error='+cast(@ret_error as varchar)\n"); 
	return OK;	
}

int cs_sqlspguardar_generator( struct st_model *model)
{
	FILE *farchivo;
	char archivo[100];
	char strmodel[100]="";
	int error=OK;
	if(model==NULL)
		return INVALID_MODEL;
	else{
		sprintf(archivo,"%s.sp_%s_consulta.sql",NAMESPACE,model->name);
		farchivo=fopen(archivo, "w");
		printf("Inicia codificacion de %s\n",archivo);
		fprintf(farchivo,"SET ANSI_NULLS ON\nGO\nSET QUOTED_IDENTIFIER ON\nGO\n");
		fprintf(farchivo,"CREATE PROCEDURE sp_%s_consulta\n",model->name);
		fprintf(farchivo,"\t@like bit\n");
		cs_sqlspguardar_parameter_generartor(farchivo,model);

		fprintf(farchivo,"AS\n");
		//cs_sqlspguardar_init_generator(farchivo,model);
		//cs_sqlspguardar_body_generator(farchivo,model);
		fflush(farchivo);
		fclose(farchivo);
		printf("Finaliza codificacion de %s\n\n",archivo);
	}
}


int cs_models_sqlspconsultar_generator( struct st_model_ls *models){
	while(models!=NULL)
	{
	 	cs_sqlspguardar_generator(models->model);
	 	
	 	models=models->next;
	 }
	 return OK;	
}
